package com.bluerox.updating;

import java.io.File;

/** 
* 程序文件的实体类<br><br>
* 
* Example:<br><br>
* 
* Entity e = new Entity();<br>
* e.setTitle("Title");<br>
* e.setVersion("1.0.0");<br>
* e.setBaseUrl("http://localhost:8080/");<br>
* e.setBasePath("/home/lijianbo/test");<br><br>
* 
* String tempPath = e.getTempPath();<br>
* String tempStatusPath = e.getTempStatusPath();<br>
* 
* @author 李建波 
*/
public class Entity {

	//程序名称
	private String title;
	
	//程序版本号
	private String version;
	
	//目标程序基础URL
	private String baseUrl;
	
	//本地程序基础路径
	private String basePath;
	
	//本地程序下载状态
	private int status;
	
	//状态文件名称
	private String statusFileName;

	public static final String ZIP_EXT = ".zip";
	
	//本地程序状态常量
	public static final String PENDING = "pending";
	
	public static final String DOWNLOAD = "download";
	
	public static final String FINISH = "finish";

	/**
	 * 得到程序对应版本的主索引文件名
	 * 
	 * @return 程序对应版本的主索引文件名
	 */
	public String getMainFileName(){
		//为什么这里不跟getStatusZipFileName()那样，直接在文件后加上(.zip)，既然下面能够想到用这种方式增加便捷性，为什么这里就不用呢？
		return this.title.toLowerCase() + "_level_1.xml"; 
	}

	/**
	 * 得到下一级别索引文件名
	 * 
	 * @param level 当前级别
	 * @return 下一级别索引文件名
	 */
	public String getNextFileName(int level){
		return this.title.toLowerCase() + "_level_" + (level + 1) + ".xml";
	}
	
	/**
	 * 得到程序对应版本的状态索引文件名
	 * 
	 * @return 程序对应版本的状态索引文件名
	 */
	@SuppressWarnings("static-access")
	public String getStatusZipFileName(){
		return this.title.toLowerCase() + "_status.xml" + this.ZIP_EXT;
	}

	/**
	 * 获得文件下载的临时路径
	 * 
	 * @return 返回下载文件的临时路径
	 */
	public String getTempPath(){
		//创建的临时文件夹的名称为小写
		return this.basePath + File.separator + this.getTitle().toLowerCase() + File.separator + "temp";
	}

	/**
	 * 获得索引文件下载的临时路径
	 * 
	 * @return 返回下载索引文件的临时路径
	 */
	public String getTempMainPath(){
		return this.getTempPath() + File.separator + "level";
	}

	/**
	 * 获得状态文件下载的临时路径
	 * 
	 * @return 返回状态文件的临时路径
	 */
	public String getTempStatusPath(){
		return this.getTempPath() + File.separator + "status";
	}
	
	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getVersion() {
		return version;
	}

	public void setVersion(String version) {
		this.version = version;
	}

	public String getBasePath() {
		return basePath;
	}

	public void setBasePath(String basePath) {
		this.basePath = basePath;
	}

	public String getBaseUrl() {
		return baseUrl;
	}

	public void setBaseUrl(String baseUrl) {
		this.baseUrl = baseUrl;
	}

	public int getStatus() {
		return status;
	}

	public void setStatus(int status) {
		this.status = status;
	}

	public String getStatusFileName() {
		return statusFileName;
	}

	public void setStatusFileName(String statusFileName) {
		this.statusFileName = statusFileName;
	}
}
